/*
	* Copyright 2013 Robert Peszek.
	*
	* Licensed under the Apache License, Version 2.0 (the "License");
	* you may not use this file except in compliance with the License.
	* You may obtain a copy of the License at
	*     http://www.apache.org/licenses/LICENSE-2.0
	* Unless required by applicable law or agreed to in writing, software
	* distributed under the License is distributed on an "AS IS" BASIS,
	* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	* See the License for the specific language governing permissions and
	* limitations under the License.
	*/
package fun.lists

import static fpig.shortcuts.Fpig.*
import static fpig.strings.functions.InAndOutOfFunLists_forStrings.*
import static fpig.lists.functions.Base.*
import fpig.lists.structures.FunList;
import fpig.lists.structures.LazyList;
import fpig.strings.functions.FunListToStringFunctor;
import fpig.strings.functions.FunListToTokenizedStringFunctor;

class WithFunList_TokenizedString_FunctorLawsTests extends GroovyTestCase{

	
	void testWithFunList_ID_functorsyntax() {
		def fmap = FunListToTokenizedStringFunctor.forToken(' ').fmap
		assert 'word1 word2 word3' == ( fmap (ID)) << 'word1 word2 word3'
	}

	
	void testWithFunList_composition() {
		def fmap = FunListToTokenizedStringFunctor.forToken(' ').fmap
		
		assert 'word1 word2 word3' == (fmap (reverse << reverse)) << 'word1 word2 word3'
		assert 'word1 word2 word3' == (fmap (reverse)) << (fmap (reverse)) << 'word1 word2 word3'
	}
		

}
